home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 1.iso / ARGONET / PD / GRAPHICS / POV302.ZIP / pov302 / povscn / level3 / drums2 / inc / drums
Text File  |  1995-11-08  |  5KB  |  233 lines

  1. // Persistence Of Vision raytracer version 3.0 sample file.
  2. // Include file for DRUMS.POV by Dan Farmer
  3.  
  4. #declare Brass = colour red 0.88 green 0.84 blue 0.10
  5. #declare ChromeBlue = colour red 0.84 green 0.89 blue 1.00
  6.  
  7. #declare BrassFinish = finish {
  8.    reflection 0.15
  9.    brilliance 10.0
  10.    metallic
  11.    phong 0.75
  12.    phong_size 50
  13. }
  14.  
  15. #declare Chrome = finish { Mirror }
  16.  
  17. #declare VeryShiny = finish {
  18.    ambient 0.05  diffuse 0.75
  19.    phong 1.0
  20.    phong_size 100.0
  21.    brilliance 5
  22.    reflection 0.5
  23. }
  24.  
  25. // The old Disk_X definition
  26. #declare Disk_X = cylinder { <0, 0, 0>, <1, 0, 0>, 1 }
  27.  
  28. #declare X_Tube = difference {
  29.    cylinder { -x, x, 1.0 }
  30.    cylinder { -1.1*x, 1.1*x, 0.97 }
  31. }
  32.  
  33. #declare Cymbal = union {            /* Overall radius of 6 units */
  34.    sphere {                             /* Dome */
  35.       <0, 0, 0>, 1
  36.       scale <2.0, 0.75, 2.0>
  37.       translate 1*y
  38.    }
  39.    sphere {
  40.       <0, 0, 0>, 1 
  41.       scale <6.0, 1.0, 6.0>
  42.    }
  43.  
  44.    finish { BrassFinish }
  45.    pigment { Brass }
  46.  
  47.    clipped_by { plane { y, 0.25 inverse } }
  48. }
  49.  
  50. #declare Tensioner1 =  union {
  51.    object {
  52.       Disk_X
  53.       translate -0.5*x
  54.       scale <0.5, 0.04, 0.02>
  55.    }
  56.  
  57.    intersection {
  58.       sphere { <0, 0, 0>, 1 scale <0.25, 0.1, 0.06> }
  59.       plane { x, 0 }
  60.    }
  61.  
  62. }
  63.  
  64. #declare Tensioner = union {
  65.    object { Tensioner1 translate 0.5*x }
  66.    object { Tensioner1 rotate 180*z translate -0.5*x }
  67.  
  68.    translate 1.03*z        /* Position for rotation around drum cylinder */
  69.  
  70.    finish { Chrome }
  71.    pigment { ChromeBlue }
  72. }
  73.  
  74.  
  75. #declare Drum = union {
  76.    sphere {                                       /* Top (and rear) Drumhead */
  77.       <0, 0, 0>, 1
  78.       scale <0.001, 1.0, 1.0>
  79.       translate 0.75*x
  80.  
  81.       finish {
  82.          ambient 0.1
  83.          diffuse 0.7
  84.          specular 0.2
  85.          roughness 0.01
  86.       }
  87.       pigment { White }
  88.    }
  89.  
  90.    object {                                       /* Chrome edge band #1 */
  91.       X_Tube
  92.       scale <0.05, 1.025, 1.0>
  93.       translate -0.8*x
  94.  
  95.       texture {
  96.          finish { Chrome }
  97.          pigment { ChromeBlue }
  98.       }
  99.    }
  100.  
  101.    intersection {                         /* Drum body */
  102.       cylinder {
  103.          -1.1*x, 1.1*x, 1.0
  104.  
  105.          finish { VeryShiny }
  106.          pigment { White }
  107.       }
  108.  
  109.       cylinder {
  110.          -1.1*x, 1.1*x, 0.97         /* Inside of the drum cylinder */
  111.          inverse
  112.  
  113.          pigment { Tan }
  114.          finish {
  115.             ambient 0.05
  116.             diffuse 0.5
  117.          }
  118.       }
  119.  
  120.       box { <-1, -1, -1>, <1, 1, 1>
  121.           finish { Chrome }
  122.           pigment { ChromeBlue }
  123.       }
  124.  
  125.  
  126.       scale <0.8, 1.0, 1.0>
  127.    }
  128.  
  129.    object {                                       /* Chrome edge band #2 */
  130.       X_Tube
  131.       scale <0.05, 1.025, 1.0>
  132.       translate 0.8*x
  133.       texture {
  134.          finish { Chrome }
  135.          pigment { ChromeBlue }
  136.       }
  137.    }
  138.  
  139.    /* Now a bunch of (10) tensioners */
  140.  
  141.    object { Tensioner rotate 000*x }
  142.    object { Tensioner rotate 036*x }
  143.    object { Tensioner rotate 072*x }
  144.    object { Tensioner rotate 108*x }
  145.    object { Tensioner rotate 144*x }
  146.    object { Tensioner rotate 180*x }
  147.    object { Tensioner rotate 216*x }
  148.    object { Tensioner rotate 252*x }
  149.    object { Tensioner rotate 288*x }
  150.    object { Tensioner rotate 324*x }
  151.  
  152. }
  153.  
  154. #declare BassDrum = union {
  155.    object { Drum }
  156.  
  157.    sphere {             /* Front Drumhead for Bass */
  158.       <0, 0, 0>, 1
  159.       scale <0.001, 1.0, 1.0>
  160.       translate -0.75*x
  161.  
  162.       finish {
  163.          ambient 0.2
  164.          diffuse 0.7
  165.          specular 0.5
  166.          roughness 0.05
  167.       }
  168.       pigment { White filter 0.25 }
  169.    }
  170.  
  171.    scale <8.0, 10.0, 10.0>
  172. }
  173.  
  174. /********************** not used at this time
  175. #declare SnareDrum = object {
  176.     Drum
  177.     rotate 90.0*z
  178.     scale <5.0, 4.0, 5.0>
  179. }
  180. ***********************/
  181.  
  182. #declare TomTom = object {
  183.    Drum
  184.    rotate 90.0*z
  185.    scale <5.0, 5.0, 5.0>
  186. }
  187.  
  188. /* Combine a base and a pair of tomtoms into a half-set */
  189. /* Object is still centered at 0,0 at this point */
  190. #declare HalfSet = union {
  191.    object {              /* Right bass  */
  192.       BassDrum
  193.       rotate -90.0*y     /* Turn it on its end */
  194.    }
  195.  
  196.    object {
  197.       TomTom
  198.       rotate +30.0*x                   /* Lean it towards drummer */
  199.       translate 16.0*y                 /* Raise it up */
  200.       translate -7.0*x                 /* Move it left */
  201.    }
  202.  
  203.    object {
  204.       TomTom
  205.       rotate +30.0*x                   /* Lean it towards drummer */
  206.       translate 16.0*y                 /* Raise it up */
  207.       translate +7.0*x                 /* Move it right */
  208.    }
  209.  
  210.    union {         /* tomtom bracket */
  211.       object {
  212.          Disk_X                         /* Horizontal bar */
  213.          translate -0.5*x
  214.          scale <4, 0.25, 0.25>          /* Fits between tomtoms */
  215.          translate 16.0*y               /* Raise to top of vertical bar*/
  216.       }
  217.  
  218.       sphere { <0, 0, 0>, 1 translate <-4, 16, 0> scale <0.5, 1, 1> }
  219.       sphere { <0, 0, 0>, 1 translate < 4, 16, 0> scale <0.5, 1, 1> }
  220.  
  221.       object {                   /* Vertical bar */
  222.          Disk_Y
  223.          scale <0.30, 6.0, 0.30>
  224.          translate <0.0, 10.0, 0.0>
  225.       }
  226.  
  227.       sphere { <0, 0, 0>, 1 scale <1.25, 0.5, 1.25> translate 10*y }
  228.    }
  229.  
  230.    finish { Mirror }
  231.    pigment { White }
  232. }
  233.